#include<stdio.h>
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <sys/types.h>

int count = 0;
void HandlerAlarm(int signo){
  printf("hello: %d\n", count);
  exit(1);
}
int main(){//统计一下1s的时间，服务器能对count递增多少
  signal(SIGALRM, HandlerAlarm);
  alarm(1);//没有设置alarm信号的捕捉动作（即没有自定义），执行默认动作
  while(1){
    count++;
    //printf("hello: %d\n",count++);//这里比较慢，因为有IO
  }
  return 0;
}




//static void Usage(const char* proc){
//  printf("Usage:\n\t %s signo who\n", proc);
//}
//
//int main(int argc, char* argv[]){
//  if(argc != 3){
//    Usage(argv[0]);
//    return 1;
//  }
//
//  int signo = atoi(argv[1]);
//  int who = atoi(argv[2]);
//
//  kill(who, signo);
//
//  printf("signo: %d, who: %d\n", signo, who);
//  return 0;
//}





//int main(){
//  if(fork() == 0){
//    while(1){
//      printf("I am child ...\n");
//      int a = 0;
//      a/=0;
//    }
//  }
//
//  int status = 0;
//  waitpid(-1, &status, 0);
//  printf("exit code: %d. exit signal: %d. core dump flag: %d\n",(status>>8)&0xFF, status&0x7F, (status>>7)&1);
//}



//void handler(int signo){
//  switch(signo){
//    case 2:
//      printf("hello Linux,get a signal:%d\n", signo);
//      break;
//    case 3:
//      printf("hello world,get a signal:%d\n", signo);
//      break;
//    case 9:
//      printf("hello ...,get a signal:%d\n", signo);
//      break;
//    default:
//      printf("hello signal:%d\n", signo);
//      break;
//  }
//  exit(1);
//}
//int main(){
//  //捕捉所有信号
//  //int cnt = 1;
//  //for( ; cnt < 31; cnt++){
//  //  signal(cnt, handler);
//  //}
//
//  while(1){
//   // int* p = NULL;
//   // p = (int*)100;
//   // *p = 100;//野指针访问
//    int a = 10;
//    a /= 0;//浮点异常
//    printf("hello linux!\n");
//    sleep(1);
//  }
//  return 0;
//}
//
//
